package com.itlong.cloud.operate.dao;

import com.itlong.cloud.POJO.PO.AmountChangeInfoPO;
import com.itlong.cloud.POJO.VO.operate.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * <desc>
 *      运营-财务管理-财务提现审核数据访问接口。
 * <desc/>
 *
 * @createDate 2018/09/20.
 */
@Mapper
@Repository
public interface IOperateWithdrawDao {

    /**
      * <desc>
      *      分页查询财务提现审核列表。
      * <desc/>
      *
      * @param  param
      * @return
      * @author Qiang.S
      * @createDate 2018/09/20
      */
    List<OperateWithdrawVO> getWithdrawInfoPage(Map<String, Object> param);

     /**
      * <desc>
      *      财务提现审核查询总记录数。
      * <desc/>
      *
      * @param  param
      * @return
      * @author Qiang.S
      * @createDate 2018/09/20
      */
    Integer getWithdrawInfoPageCount(Map<String, Object> param);

    /**
     * <desc>
     *      批量拒绝提现申请。
     * <desc/>
     *
     * @param cashIds 提现记录ID
     * @param myUserName 登陆用户编号
     * @return
     * @author Qiang.S
     * @createDate 2018-09-20
     */
    Integer refuse(@Param("cashIds") String[] cashIds,@Param("myUserName") String myUserName);

    /**
     * <desc>
     *      修改备注
     * <desc/>
     *
     * @param cashId 提现记录ID
     * @param remark 备注
     * @return
     * @author Qiang.S
     * @createDate 2018-09-20
     */
    Integer updateRemark(@Param("cashId") String cashId, @Param("remark") String remark);

    /**
     * <desc>
     *      修改状态
     * <desc/>
     *
     * @param cashId 提现记录ID
     * @param tradeStatus 3提现成功 4提现失败
     * @return
     * @author Qiang.S
     * @createDate 2018-09-20
     */
    Integer updateTradeStatus(@Param("cashId") String cashId, @Param("tradeStatus") String tradeStatus);

    /**
     * <desc>
     *      物业未提现
     * <desc/>
     *
     * @return
     * @author Qiang.S
     * @createDate 2018-09-28
     */
    String getUnwithdrawAll();

    /**
     * <desc>
     *      获取所有微信商户号金额
     * <desc/>
     *
     * @return
     * @author Qiang.S
     * @createDate 2018-10-18
     */
    String getWechatAccountAll();

    /**
     * <desc>
     *      物业已提现
     * <desc/>
     *
     * @return
     * @author Qiang.S
     * @createDate 2018-09-28
     */
    String getWithdrawAll();

    /**
     * <desc>
     *      物业增值总金额
     * <desc/>
     *
     * @return
     * @author Qiang.S
     * @createDate 2018-09-28
     */
    String getPropertyValueAccount();

    /**
     * <desc>
     *      根据条件查询财务提现审核信息
     * <desc/>
     *
     * @param cashIds
     * @return
     * @author Qiang.S
     * @createDate 2018-09-20
     */
    List<OperateWithdrawVO> getWithdrawInfoForExcle(@Param("cashIds")String[] cashIds);

    /**
     * <desc>
     *      查询银联交易结果状态为未超时且处理中的订单信息
     * </desc>
     * @param
     * @author Juguang.S
     * @createDate 2018-09-25
     */
    List<ChinaPayWithdrawVO> getTradeInfoByStatus();

    /**
     * <desc>
     *      更新
     * <desc/>
     * @param   params  bean转换层map后的参数集
     * @return  更新数量
     * @author Biao.R
     * @createDate 2018/9/25
     */
    Integer update(Map<String, Object> params);

    /**
     * <desc>
     *      财务提现审核明细查询
     * <desc/>
     *
     * @param cashId 提现记录ID
     * @return
     * @author Qiang.S
     * @createDate 2018-09-27
     */
    OperateWithdrawVO getWithdrawDetail(String cashId);

    /**
     * <desc>
     *      查询当前项目下是否有默认使用银行卡
     * </desc>
     * @param
     * @author Juguang.S
     * @createDate 2018-10-09
     */
    Integer getDefaultUserBankCard(@Param("projectId") String projectId);

    /**
     * <desc>
     *      将当前提现成功的银行卡做为该项目默认使用的银行卡
     * </desc>
     * @param
     * @author Juguang.S
     * @createDate 2018-10-09
     */
    void updateDefaultUserBankCard(@Param("projectId") String projectId,@Param("bankCardNo") String bankCardNo);

}
